#pragma once
#include <vector>

class CPassenger;
typedef std::vector<CPassenger*> PassengerCollection;

struct IPassengerListener
{
	virtual void OnPassengerArrived(CPassenger* passenger) = 0;
};

struct ILoadPassengersListener
{
	virtual void LoadPassengersAtArival(PassengerCollection& incomingPassengers) = 0;
};

struct ICallRequestListener
{
	virtual void OnCallRequest(size_t from, bool upDirection)=0;
};

struct IUpdateListener
{
	virtual void Update() = 0;
};

struct IElevatorActionListener
{
	virtual void OnElevatorAction() = 0;
};

struct IPassengertransportedListener
{
	virtual void OnPassengerTransported() = 0;
};